package com.ohos.connect.devicecloud.app.modular.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ohos.connect.devicecloud.app.modular.user.model.entity.AppUser;
import com.ohos.connect.devicecloud.app.modular.user.model.dto.*;
import com.ohos.connect.devicecloud.app.modular.user.model.vo.AppLoginUserVO;
import com.ohos.connect.devicecloud.app.modular.user.model.vo.AppUserInfoVO;

import java.util.List;

/**
 * APP用户Service接口
 **/
public interface AppUserService extends IService<AppUser> {

    /**
     * 根据id获取用户信息，查不到则返回null
     */
    AppLoginUserVO getUserById(String id);

    /**
     * 根据账户获取用户信息，查不到则返回null
     */
    AppLoginUserVO getUserByAccount(String account);

    /**
     * 根据手机号获取用户信息，查不到则返回null
     */
    AppLoginUserVO getUserByPhone(String phone);

    /**
     * 根据邮箱获取用户信息，查不到则返回null
     */
    AppLoginUserVO getUserByEmail(String email);

    /**
     * 获取APP用户分页
     */
    Page<AppUser> page(AppUserPageDTO appUserPageDTO);

    /**
     * 添加APP用户
     */
    boolean insert(AppUserInsertDTO appUserInsertDTO);

    /**
     * 编辑APP用户
     * 
     */
    Boolean edit(AppUserEditDTO appUserEditDTO);

    /**
     * APP账户绑定邮箱
     * 
     */
    Boolean bindEmail(AppUserEmailDTO appUserEmailDTO);

    /**
     * 删除APP用户
     */
    void delete(List<AppUserAccountDTO> appUserAccountDTOList);

    /**
     * 根据帐号删除APP用户
     */
    Boolean deleteByAccount(String account);

    /**
     * 获取APP用户详情
     */
    AppUserInfoVO detail(AppUserAccountDTO appUserAccountDTO);

    /**
     * 根据手机号获取APP用户详情
     */
    AppUserInfoVO detailByPhone(AppUserPhoneDTO appUserPhoneDTO);

    /**
     * 更新APP用户的登录时间和登录ip等信息
     */
    void updateUserLoginInfo(String userId, String device);

    /**
     * 根据账户获取APP用户详情
     */
    AppUser queryEntityByAccount(String account);
}
